      subroutine sws_2d5p_neighbor(args)
        use dag_parallel
        IMPLICIT NONE
#include "aceMesh_runtime_f.h"
        include "init.for"
!      type ARG_TYPE
!        integer:: starti,endi,startj,endj,sizeK,dest,src
!      end type ARG_TYPE
        type(ARG_TYPE) :: args
        integer :: starti,startj
!      integer*8 :: addr1
!      integer :: BLKX,BLKY
        integer :: src,num,it
        starti=args%starti
        startj=args%startj
        it=args%iter
        src = mod(it+1,2)+1
        num=0
        if(starti>=(BLKX+2))then
          num=num+1
          addr1 = loc(A(startj,starti-BLKX,src))
          call acemesh_push_neighbor_addr(%val(addr1))       
        endif
        if (args%starti<SIZEX-BLKX)then
          num=num+1
          addr1 = loc(A(startj,starti+BLKX,src))
          call acemesh_push_neighbor_addr(%val(addr1))
        endif
        if (args%startj>=BLKY+2)then
          num=num+1
          addr1 = loc(A(startj-BLKY,starti,src))
          call acemesh_push_neighbor_addr(%val(addr1))
        endif
        if (args%startj<SIZEY-BLKY)then
          num=num+1
          addr1 = loc(A(startj+BLKY,starti,src))
          call acemesh_push_neighbor_addr(%val(addr1))
        endif 
      end subroutine 
